Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Робота з компілятором G++ в ОС GNU/LINUX

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2019
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Операційні системи

Частина тексту файла

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра БІТ / З В І Т до лабораторної роботи №6 з дисципліни “Операційні системи” на тему “Робота з компілятором G++ в ОС GNU/LINUX ” Мета роботи – оволодіти практичними навиками роботи з компілятором G++ та системними викликами в операційній системі GNU/Linux; ознайомитись із механізмом виконання системних викликів, процесом компіляції та побудови виконавчих файлів в цій ОС. Порядок виконання роботи 1. Створити три файли з кодом на мові С++. Два файли з вихідним кодом на мові С++, перший повинен містити процедури, що реалізують задане варіантом завдання, а другий функцію main (). Третій файл – заголовний (.h). Створити Make-файл, що міститиме правила для створення виконавчого файлу, а також правила clean, install і uninstall. Результати виконання Імплементація header файлу “task.h” - “task.cpp” #include<stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <iostream> #include <unistd.h> #include <stdexcept> #include "task.h" #define BUF_SIZE 4096 #define OUTPUT_M0DE 0700 FilePerms::FilePerms(char* name) { if(!name) { throw std::invalid_argument( "File doesn't exists!" ); return; } this->name=name; } char * FilePerms::Task(){ struct stat st; char *modeval = (char*)malloc(sizeof(char) * 9 + 1); if(stat(name, &st) == 0){ mode_t perm = st.st_mode; modeval[0] = (perm & S_IRUSR) ? 'r' : '-'; modeval[1] = (perm & S_IWUSR) ? 'w' : '-'; modeval[2] = (perm & S_IXUSR) ? 'x' : '-'; modeval[3] = (perm & S_IRGRP) ? 'r' : '-'; modeval[4] = (perm & S_IWGRP) ? 'w' : '-'; modeval[5] = (perm & S_IXGRP) ? 'x' : '-'; modeval[6] = (perm & S_IROTH) ? 'r' : '-'; modeval[7] = (perm & S_IWOTH) ? 'w' : '-'; modeval[8] = (perm & S_IXOTH) ? 'x' : '-'; modeval[9] = '\0'; return modeval; } else{ return strerror(errno); } } char ans; std::cout<<"\nWant to close permissions? y/n\n"; std::cin>>ans; if(tolower(ans)=='y') { chmod(name, S_IRWXU); std::cout<<"\nDone\n"; char* tmpshow = Task(); std::cout<<"\nNew file permissions: "<<tmpshow<<std::endl; } else return; } Текст main.cpp: #include <sys/stat.h> #include <sys/types.h> #include<stdio.h> #include <iostream> #include <cstring> #include "task.h" int main(void) { bool prog_works = true; while(prog_works) { char* MainDir = new char[100]; char* ChildDir = new char[100]; std::cout<<"\n\n"; std::cout<<"File directory + name: \n"; std::cin>>MainDir; FilePerms fp (MainDir); char*t=fp.Task(); std::cout<<"\nFile permissions: "; std::cout<<t; std::cout<<std::endl; fp.ChangePerms(); char ans; std::cout<<"\nWant to run again? y/n\n"; std::cin>>ans; if(tolower(ans)=='y') { std::cout<<"\nOkey, here we go again\n"; } else prog_works=false; } return 0; } Текст заголовного файлу: #ifndef TASK_H_ #define TASK_H_ class FilePerms { public: FilePerms(char* name); char* Task(); void ChangePerms(); //void OpenCloseFile(); private: char* name; }; #endif Текст Makefile: result: task.o main.o g++ task.o main.o -o result task.o: task.cpp task.h g++ -c task.cpp -lstdc++ main.o: main.cpp task.h g++ -c main.cpp -lstdc++ clean: rm -f result task.o main.o install: cp result /usr/local/bin/result uninstall: rm -f /usr/local/bin/result Результати виконання Висновок: на цій лабораторній роботі я оволодів практичними навиками роботи з компілятором GCC, G++ та системними викликами в операційній системі GNU/Linux; ознайомився із механізмом виконання системних викликів, процесом компіляції та побудови виконавчих файлів в цій ОС.
Антиботан аватар за замовчуванням

02.06.2019 19:06

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини